""""""
"""
设计模式 是一种编程套路. 可以极大地方便程序的开发
最常见, 最经典的设计模式, 就是我们所学习的面向对象了

除了面向对象外, 在编程中也有许多既定的套路可以方便开发, 我们称之为设计模式:

建造者,责任链,状态,备忘录,解释器,访问者,观察者,中介,模板,代理模式
等许多模式

设计模式非常多,我们主要挑选了两个经常用到的进行讲解
单例模式 和 工厂模式
"""
"""
这里介绍 单例模式

创建类的实例后,就可以得到一个完整的 独立的类对象.
通过print语句可以,看出它们的内存地址是不相同的. 即T1和T2是完全独立的两个对象
"""


class 类_示例:
    pass


t1 = 类_示例()
t2 = 类_示例()
print(t1)
print(t2)
print()
"""
在某些场景下,我们需要一个类 无论获取多少次类对象, 都仅仅提供一个具体的实例.
用以节省创建类对象的开销和内存开销
比如某些工具类,仅需要一个实例,即可在各处使用

这就是单例模式所实现的效果
"""
"""
定义:保证一个类只有一个实例,并提供一个访问它的全局访问点.
适用场景: 当一个类只有一个实例,而客户可以从一个众所周知的访问点访问它时
"""
from 单例模式 import 示例  # 另外一个文件里,定义了一个叫 "示例" 的对象. 我们直接调用这个对象,而不是调用类

对象1 = 示例
对象2 = 示例

print(对象1)
print(对象2)    # 输出看到2个对象的内存地址是相同的,证明它们本质是一个 实例(类对象)
print(id(对象1))
print(id(对象2))  # 输出看到2个对象的ID也是相同的,也证明它们本质是一个 实例(类对象)

# 可以看到这个 "示例" 就是一个全局的访问点,  这种就是单例模式

"""
小说明 编程套路, 不是语法.只是一直代码的写法
以方便我们节约工作
"""